iT邦幫忙

2024 iThome 鐵人賽

DAY 25
0
Python

進擊的Python系列 第 28

Day25-SciPy(艾爾文)

  • 分享至 

  • xImage
  •  

大家好!我是艾爾文團長~我分享SciPy

https://ithelp.ithome.com.tw/upload/images/20240828/20163257vAk9oCrrFX.png
圖片來源:(https://forum.gamer.com.tw/C.php?bsn=43473&snA=7431)

https://ithelp.ithome.com.tw/upload/images/20240828/20163257b5GYmlo0LE.png
圖片來源:(https://se.ewi.tudelft.nl/desosa2019/chapters/scipy/)

SciPy(Scientific Python)

是建立在 NumPy 上的 Python 函式庫,提供眾多科學與工程計算所需的算法與函式。涵蓋數值積分、優化、線性代數、插值、統計、訊號處理、圖像處理等等

SciPy主要功能

  • 數值積分:計算定積分
  • 優化:求解最佳化問題
  • 線性代數:提供高效的線性代數運算
  • 插值:在數據點之間進行插值
  • 統計:提供各種統計分析功能
  • 訊號處理:進行訊號處理相關的運算
  • 圖像處理:提供圖像處理的工具

SciPy主要子模組

scipy.integrate 數值積分、常微分方程求解
scipy.optimize 優化問題求解
scipy.linalg 線性代數運算
scipy.interpolate 插值
scipy.stats 統計分布、統計測試
scipy.signal 訊號處理
scipy.sparse 稀疏矩陣
scipy.special 特殊函數
scipy.spatial 空間數據結構與算法
scipy.cluste 聚類分析

SciPy進階應用

  • 解微分方程
  • 傅立葉變換
  • 信號濾波
  • 資料擬合
  • 機器學習

SciPy安裝

可以使用 pip 來安裝 SciPy

pip install scipy

SciPy使用範例

以下是一個簡單範例,如何使用 SciPy 進行數值積分

from scipy import integrate

def f(x):
    return x**2

result, error = integrate.quad(f, 0, 1)
print(result)
import numpy as np
from scipy import optimize

# 求解方程組
def f(x):
    return [x[0]**2 + x[1]**2 - 1, x[0] - x[1]]

result = optimize.root(f, [0, 0])
print(result.x)

SciPy基本範例

優化

from scipy import optimize

def f(x):
    return x**2 + 10*x

result = optimize.minimize(f, x0=0)
print(result.x)

線性代數

from scipy import linalg

A = np.array([[1, 2], [3, 4]])
b = np.array([5, 6])
x = linalg.solve(A, b)
print(x)

插值

from scipy import interpolate

x = np.linspace(0, 10, 11)
y = np.sin(x)
f = interpolate.interp1d(x, y)
xnew = np.linspace(0, 10, 101)
ynew = f(xnew)

積分

from scipy import integrate

def f(x):
    return np.sin(x)

result, error = integrate.quad(f, 0, np.pi/2)
print(result)

統計

from scipy import stats

data = np.random.randn(1000)
mean, var, skew, kurt = stats.describe(data)
print(mean, var, skew, kurt)

解常微分方程

from scipy.integrate import solve_ivp

def f(t, y):
    return -y

sol = solve_ivp(f, [0, 10], [1])

最小二乘法

from scipy.optimize import least_squares

def func(x, a, b):
    return a * x + b

傅立葉變換

from scipy.fft import fft, ifft
# ...

總結

SciPy 是 Python 生態系中一個強大的科學計算工具,它提供豐富的函式和功能,可以幫助快速解決各種科學計算問題。如果需要進行數值計算、數據分析、訊號處理等等工作,那麼 SciPy 將是一個非常有用的工具


上一篇
Day24-Matplotlib(格達)
下一篇
Day26-Tkinter(米可)
系列文
進擊的Python36
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言